.globl .str
	.data
	.align	 64
	.type	.str, @object
.str:
	.string "%ld\n"
.globl .str1
	.data
	.align	 64
	.type	.str1, @object
.str1:
	.string "%ld"
.globl .str2
	.data
	.align	 64
	.type	.str2, @object
.str2:
	.string "%ld "
.globl fib
	.type	fib  ,@function
fib:
	pushq	%rbp
	movq	%rsp, %rbp
	pushq	%rbx
	movq	%rdi, -8(%rbp)
	subq	$440, %rsp
.entryfib:
	movq	-8(%rbp), %rax
	movq	%rax, -16(%rbp)
	movq	-16(%rbp), %r10
	cmpq	$1, %r10
	JLE	.bb1fib
	JMP	.bbfib
.bbfib:
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	-16(%rbp), %r11
	movq	%r11, %rax
	subq	$1, %rax
	movq	%rax, %r12
	movq	%r12, %rax
	movq	%rax, %rdi
	pushq	%rdi
	popq	%rdi
	call	fib
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %r13
	movq	%r13 ,-64(%rbp)
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	-16(%rbp), %r14
	movq	%r14, %rax
	subq	$2, %rax
	movq	%rax, %rdi
	movq	%rdi, %rax
	movq	%rax, %rdi
	movq	%rdi ,-80(%rbp)
	pushq	%rdi
	popq	%rdi
	call	fib
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rdi
	movq	%rdi ,-88(%rbp)
	movq	%r13, %rax
	addq	%rdi, %rax
	movq	%rax, %rsi
	movq	%rsi ,-32(%rbp)
	JMP	.bb4fib
.bb1fib:
	movq	-16(%rbp), %r15
	cmpq	$1, %r15
	JNE	.bb3fib
	JMP	.bb2fib
.bb2fib:
	movq	$1, -32(%rbp)
	JMP	.bb4fib
.bb3fib:
	movq	$0, -32(%rbp)
	JMP	.bb4fib
.bb4fib:
	movq	-32(%rbp), %rcx
	movq	%rcx ,-24(%rbp)
	JMP	.returnfib
.returnfib:
	movq	-24(%rbp), %r8
	movq	%r8, %rax
	addq	$400, %rsp
	popq	%rbx
	leave
	ret
.globl print
	.type	print  ,@function
print:
	pushq	%rbp
	movq	%rsp, %rbp
	pushq	%rbx
	movq	%rdi, -8(%rbp)
	subq	$336, %rsp
.entryprint:
	movq	-8(%rbp), %rax
	movq	%rax, -16(%rbp)
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	-16(%rbp), %r9
	movq	$8, %rax
	imulq	$0, %rax
	addq	%r9, %rax
	movq	%r9 ,-40(%rbp)
	movq	%rax, %r9
	movq	%r9 ,-48(%rbp)
	movq	(%r9), %r9
	movq	%r9, %rax
	movq	%rax, %rsi
	movq	%rsi ,-96(%rbp)
	pushq	%rsi
	movq	$.str, %rdi
	pushq	%rdi
	popq	%rdi
	popq	%rsi
	movq	$0, %rax
	call	printf
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rsi
	movq	%rsi ,-64(%rbp)
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	%r9 ,-56(%rbp)
	movq	-16(%rbp), %r9
	movq	$8, %rax
	imulq	$-1, %rax
	addq	%r9, %rax
	movq	%r9 ,-72(%rbp)
	movq	%rax, %r9
	movq	%r9 ,-80(%rbp)
	movq	(%r9), %r9
	movq	%r9, %rax
	movq	%rax, %rsi
	movq	%rsi ,-64(%rbp)
	pushq	%rsi
	movq	$.str, %rdi
	pushq	%rdi
	popq	%rdi
	popq	%rsi
	movq	$0, %rax
	call	printf
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rsi
	movq	%rsi ,-96(%rbp)
	JMP	.returnprint
.returnprint:
	movq	%r9 ,-88(%rbp)
	movq	-24(%rbp), %r9
	movq	%r9, %rax
	addq	$296, %rsp
	popq	%rbx
	leave
	ret
.globl main
	.type	main  ,@function
main:
	pushq	%rbp
	movq	%rsp, %rbp
	pushq	%rbx
	subq	$696, %rsp
.entrymain:
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	leaq	-336(%rbp), %rax
	movq	%rax, %rsi
	movq	%rsi ,-96(%rbp)
	pushq	%rsi
	movq	$.str1, %rdi
	pushq	%rdi
	popq	%rdi
	popq	%rsi
	movq	$0, %rax
	call	__isoc99_scanf
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rsi
	movq	%rsi ,-352(%rbp)
	movq	$1, -344(%rbp)
	JMP	.bb1main
.bbmain:
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	%r9 ,-104(%rbp)
	movq	-344(%rbp), %r9
	movq	%r9, %rax
	movq	%rax, %rdi
	movq	%rdi ,-88(%rbp)
	pushq	%rdi
	popq	%rdi
	call	fib
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rdi
	movq	%rdi ,-368(%rbp)
	pushq	%r10
	pushq	%r11
	pushq	%r12
	pushq	%r13
	pushq	%r14
	pushq	%rdi
	pushq	%rsi
	pushq	%r15
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbx
	movq	%rdi, %rax
	movq	%rax, %rsi
	movq	%rsi ,-352(%rbp)
	pushq	%rsi
	movq	$.str2, %rdi
	pushq	%rdi
	popq	%rdi
	popq	%rsi
	movq	$0, %rax
	call	printf
	popq	%rbx
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%r15
	popq	%rsi
	popq	%rdi
	popq	%r14
	popq	%r13
	popq	%r12
	popq	%r11
	popq	%r10
	movq	%rax, %rsi
	movq	%rsi ,-376(%rbp)
	movq	%rdi ,-368(%rbp)
	movq	-344(%rbp), %rdi
	movq	%rdi, %rax
	addq	$1, %rax
	movq	%rdi ,-384(%rbp)
	movq	%rax, %rdi
	movq	%rdi ,-344(%rbp)
	JMP	.bb1main
.bb1main:
	movq	%rdi ,-392(%rbp)
	movq	-344(%rbp), %rdi
	movq	%rdi, %rax
	movq	%rdi ,-400(%rbp)
	movq	-336(%rbp), %rdi
	cmpq	%rdi, %rax
	JG	.bb2main
	JMP	.bbmain
.bb2main:
	JMP	.returnmain
.returnmain:
	movq	%rdi ,-408(%rbp)
	movq	-8(%rbp), %rdi
	movq	%rdi, %rax
	addq	$648, %rsp
	popq	%rbx
	leave
	ret
